"Jedes Neuron verfügt über ein sogenanntes rezeptives Feld, das ist eine Gruppe von Neuronen für deren Aktivierung es sensibilisiert ist."
Dieses Modul dient als grundlegende Einführung in das Thema Neuronale Netze (NN). Das Ziel dieser Lektion ist es, neuronale Netze vorzustellen und nicht nur zu zeigen, was sie können und wie sie verwendet werden, sondern auch einen Einblick zu geben, wie sie intern funktionieren.
Die Schüler*innen können:
| Zeit | Inhalt | Material |
|---|---|---|
| 50 min | Theorie - Teil 1 - Grundlagen | Folien |
| 30 min | Theorie - Teil 2 - Rezeptive Felder | Folien |
| 20 min | Praxis - Simulator in der manuellen und automatischen Variante | Simulator |
| 25 min | Theorie - Teil 3 - praktisches minimales Beispiel | Folien |
| 10 min | Praxis - Simulator | Simulator |
| 15 min | Praxis - praktische Übung | Dateien |
Dieser Teil erklärt die Grundkonzepte und den Aufbau von neuronalen Netzen und zeigt die Funktionsweise am Beispiel einer Zeichenerkennung mithilfe eines einfachen Feed-Forward-Netzwerks.
Neuronale Netze als vermutliche Grundlage aller Denkprozesse, künstliche Neuronale Netze als Versuch diesen Vorgang prinzipiell aber nicht im Detail nachzubilden. Neuronale Netze funktionieren grundsätzlich anders als herkömmliche Computer mit der üblichen von Neumann Architektur (Recheneinheit [Arithmetical Logical Unit], Steuereinheit [Control Unit], Speicher [Memory], Ein-/Ausgabeeinheit [I/O-Unit]). Begriffseinführung „Feed-Forward-Network“.
Warum ist Ziffern- und Zeichenerkennung anspruchsvoll? Was macht es so schwierig für herkömmliche Programmierung?
Wie werden die Eingabedaten, also in unserem Fall die grafisch dargestellten Ziffern und Zahlen dem Netzwerk zugeführt? Die Pixelhelligkeiten werden als Aktivierungen von Neuronen der ersten Schicht (= Eingabeschicht) interpretiert.
In der Feed-Forward-Architektur ist die erste Schicht die Eingabeschicht, die letzte ist die Ausgabeschicht und die Schichten dazwischen werden verborgene Schichten genannt.
Die Folien zeigen den Fluss der Daten durch das Netzwerk. Die Aktivierungen werden durch die Verbindungen weitergeleitet und werden zu den Aktivierungen der nächsten Schicht.
Die Erkennung von Zeichen kann man sich schrittweise so vorstellen, dass zuerst einfache, grundlegendere Einheiten des Zeichens erkannt werden und dann größere, zusammenhängendere. Diese Einheiten werden jeweils farblich hervorgehoben. Ein Erklärungsansatz der Arbeitsweise von Neuronalen Netzen ist, dass es in einem erfolgreich trainierten Netz zu Arbeitsteilungen zwischen den Schichten kommt, sodaß die vorgeschalteten Schichten (linke Seite) auf die grundlegenderen Einheiten und die nachgeschalteten Schichten (rechts) eher auf die größeren Einheiten reagieren.
Der Zusammenhang zwischen Aktivierungen und Gewichtungen wird hier erklärt und der Begriff rezeptives Feld wird eingeführt. Jedes Neuron verfügt über ein sogenanntes rezeptives Feld, das ist eine Gruppe von Neuronen für deren Aktivierung es sensibilisiert ist. Das ist ein wichtiges Konzept zum Verständnis der Arbeitsweise von Neuronalen Netzen.
Damit Werte von Neuronen nicht uferlos ins positive oder negative anwachsen (ein kleiner Bereich des Netzes würde genügen um das Gesamtergebnis unbrauchbar zu machen) kommt immer eine Beschränkungsfunktion zum Einsatz. Diese wird elementarer Bestandteil der Aktivierungsfunktion.
Erklärung welche Rolle der Bias in der Funktionsweise spielt und Angabe der vollständigen Aktivierungsformel bestehend aus der Beschränkungsfunktion, den Aktivierungen, den Gewichtungen und den Vorerregungen.
Anhand dreier Fragen werden noch einmal einige fundamentale Eigenschaften eines Neuronalen Netzwerks rekapituliert.
Die Feed-Forward-Netzwerk-Architektur wurde hier vorgestellt weil sie eine sehr einfache und häufig verwendete Architektur ist. Die Grafik soll nur andeuten, dass eine Fülle anderer Architekturen eingesetzt und erprobt werden.
Dieser Teil vertieft den schon im Teil 1 eingeführten Begriff des rezeptiven Felds Anhand eines interaktiven Beispiels der Objekterkennung mit einer 2x2-Pixel-Kamera. Dieser Teil der Lektion ermöglicht mit dem Simulator ein interaktives Nachvollziehen der Arbeitsweise eines Neuronalen Netzerks.
Ein einfaches Neuronales Netz verleiht einer Kamera, die über einen 2x2-Pixel-Sensor verfügt die Fähigkeit vier verschiedene Muster zu erkennen. Wie schon zuvor bei der Zeichenerkennung ist das Problem anspruchsvoller als es zuerst klingt. Muster der gleichen Kategorie haben unter Umständen keine gemeinsamen Pixel. Wie schon zuvor wird die Helligkeit der Pixel zur Aktivierung der Neuronen in der Eingabeschicht.
In diesen Folien wird nochmals genau auf die Arbeitsweise der Neuronen eingegangen: Bildung der gewichteten Summe der Eingaben und Beschränkung der Werte. Die Details der Sigmoidfunktion bilden einen erweiterten Inhalt für fortgeschrittenere Schüler.
Die begonnene Schicht wird vervollständigt, eine zusätzliche Schicht vom gleichen Schichttyp wird hinzugefügt und schließlich eine weitere Schicht mit alternativer Aktivierungsfunktion. Für Aktivierungen und Gewichte werden in Folge nur 0, 1, -1 verwendet. Das ist eine drastische Einschränkung und funktioniert nur, weil das ein sehr einfacher Anwendungsfall ist. Es erleichtert aber das Rechnen sehr. Es ermöglicht uns den Rechengang durch das einfache Neuronale Netz zu verfolgen oder sogar selbst durchzuführen. In der Praxis wäre es keine gute Idee nur 0, 1, -1 zu verwenden. Das funktioniert nur bei diesem einfachen Beispiel.
Die Details dieser Aktivierungsfunktion sind wieder als erweiterter Inhalt zu sehen. Beide benötigen ein sattelfestes Verständnis des Funktionsbegriffs und der grafischen Funktionsdarstellung. Wichtigste Eigenschaft der ReLU-Funktion in unserem Beispiel ist, dass sie keine negativen Werte durchlässt. Diese Eigenschaft wird im letzten Schritt zur erfolgreichen Ergebnisberechnung verwendet.
Die Anwendung der beiden Aktivierungsfunktionen vereinfacht sich erheblich durch den Trick, dass nur die Werte 0,1,-1 verwendet werden. Wichtigste Eigenschaft der hauptsächlich verwendeten Aktivierungsfunktion (Sigmoid) ist, dass Werte größer 1 auf 1 reduziert werden und Werte kleine -1 auf -1. Wichtigste Eigenschaft der alternativen Aktivierungsfunktion (ReLU und leaky ReLU) ist, dass negative Werte auf 0 (oder nahe Null) reduziert werden.
Diese Folie zeigt das fertige System. Zugeführt und auch richtig erkannt wird ein vertikales Muster. Bei jedem Neuron ist das rezeptive Feld angeführt. Das ist für jedes Neuron die Menge der Eingabeneuronen von denen es direkt oder indirekt Signale erhalten kann. Die rezeptiven Felder wachsen von links nach rechts von der Größe 1 bis zur Größe 4 an. Jeweils ist auch von Bedeutung ob das Neuron auf positive (weißes Feld) oder negative Aktivierung (schwarzes Feld) in seinem rezeptiven Feld reagiert.
Im Simulator kann die Abarbeitung durch das Netzwerk durchgespielt werden. Den Simulator gibt es einmal in der manuellen und einmal in der automatischen Version. In der manuellen Version ermittelt und setzt man alle Aktivierungen selbst auf Grundlage der Eingabedaten (=Aktivierungen 0,1,-1) und Verbindungen (0,1,-1). Der automatisch arbeitende Simulator errechnet alle nötigen Aktivierungen und Ausgaben automatisch aus den Eingaben und ist in der Bedienung damit natürlich wesentlich bequemer handzuhaben. Die Herausforderung an den Bedienenden ist beim manuellen Simulator deutlich höher aber der Lerneffekt ist wesentlich größer. Begabte oder fortgeschrittene Schüler sollten zuerst mit dem manuellen Simulator vertraut gemacht werden.
Dieser Teil stellt ein interaktives praktisches Beispiel eines aus nur 5 Neuronen bestehenden Neuronalen Netzes vor. Das Besondere an diesem Teil der Lektion ist, dass es sich zwar um ein minimales aber in allen Phasen in sich geschlossenes kleines Projekt handelt. Es werden keine externen Bibliotheken oder sonstige Hilfsmittel herangezogen. Trainingsdaten, Berechnungsvorgang, Training sind überschaubar, klar dokumentiert und im Pythonquellcode unmittelbar nachvollziehbar. Das Projekt dient sehr gut dem Zweck den Bereich der Künstlichen Intelligenz zu demystifizieren. Das Projekt kann auch als Grundlage für weitere Projekte dienen, zum Beispiel könnte man eine andere Datengrundlage verwenden oder das Netzwerk auch strukturell erweitern: zusätzliche Eingabe- und Ausgabemöglichkeiten, zusätzliche Schichten … . Eine strukturelle Änderung bedingt aber auch eine Änderung des Trainingsvorgangs.
Einleitung, grafische Darstellung und Erklärung des Aufbaus des Neuronalen Netzes.
Grafische Darstellung der Beziehung zwischen Körpergewicht, Körpergröße und Geschlecht. Damit soll nur der Zusammenhang dieser Größen verdeutlicht werden. Es handelt sich dabei aber nicht um die Trainingsdaten. Trainiert wird das Netzwerk lediglich mit 4 Datensätzen (siehe Python-Programm).
Durch die Überlappung der beiden Gruppen sind nicht immer eindeutige Resultate zu erwarten. Erklärung wie die Aktivierung der Ausgabeschicht als Ergebnis zu interpretieren sind.
Hier wird der genaue Datenfluss durchs Netzwerk und der Rechengang erklärt.
Hier wird die Notwendigkeit der Beschränkungsfunktion erklärt.
Training stellt erweiterten Inhalt dar. Für fortgeschrittene Schüler stellt iii_training.pptx aber einen guten Überblick dar um das Beispiel zu vervollständigen. Auch der Pythonquellcode gibt Aufschluss über die Details des Trainings.
Der Simulator ermöglicht es allen Schülern interaktiv Werte zu probieren und das Ergebnis abzulesen.
Über 2 Schieberegler werden die Eingaben vorgenommen. Die Aktivierung der Neuronen wird numerisch beim Neuron ausgegeben und zusätzlich mit Graustufen visualisiert. Schwarz steht hier für Aktivierung 0, weiß für Aktivierung 1. Die Stärke einer gewichteten Verbindung wird mit der Strichbreite symbolisiert. Positive Verbindungen sind schwarz, negative sind rot gefärbt.
Die Teilnehmenden können mit dem erworbenen Wissen nun selbst eigene Beispieleingaben durchrechnen. Durch den minimalen, einfachen Aufbau des Netzwerkes ist eine manuelle Berechnung einfach durchführbar.
3 Wertepaare sind vorgegeben, für die die Teilnehmenden Ergebnisse berechnen können. In der untersten Zeile können eigene Werte verwendet werden.
Das zugrundeliegende Pythonprogramm liegt in 2 Versionen vor, in denen verschiedene Aktivierungsfunktionen zum Einsatz kommen.